Conversation
| (defn is-palindrome [test-string]) | ||
| (defn is-palindrome [test-string] | ||
| (let [normal-str (string/upper-case (string/replace test-string #"[^a-zA-Z0-9]" "")) | ||
| invert-str (string/reverse normal-str)] (= normal-str invert-str))) |
There was a problem hiding this comment.
"тело" в let лучше переносить на новую строчку.
| normal-string (-> test-string | ||
| (string/replace #"[\s\W]" "") | ||
| string/lower-case)] | ||
| (= (set alphabet) (set normal-string)))) |
There was a problem hiding this comment.
Раз уж с множествами работаете, то можно было бы проверить, что пересечение (set alphabet) и (set test-string) равно (set alphabet) - это и есть признак того, что все буквы были использованы :) В этом случае никакие дополнительные действия над входной строкой не нужны.
| nil) | ||
| (let [letters-set (set (mapv str letters)) | ||
| word-set (set (mapv str word))] | ||
| (= (clojure.set/intersection letters-set word-set) word-set))) |
There was a problem hiding this comment.
А вот здесь использование множеств не сработает. Потому что, приводя строку к множеству, вы теряете информацию о количестве повторов букв. А чтобы составить word из letters может потребовать более одного экземпляра той или иной буквы.
Вы точно запускали тесты? Среди тестовых примеров точно есть такой, в которому буквы в собираемом слове повторяются.
|
В будущем, пожалуйста, делайте по одному pull request на домашнее задание. Сейчас PR называется "HW04", но содержит код к другим урокам. |
Доброго времени суток - сумел написать scramblies , а как делать задание magic_square - не знаю, не могу составить алгоритм даже на императивном языке, не то что на clojure. Пытался смотреть ролики на ютьюбе чтоб хоть понять как действовать - не помогло, как выполнить такие-же действия программно пока не могу себе представить ( а хотелось бы ).